package objetosGraficos;

import java.awt.Point;
import java.util.Random;
import javax.swing.ImageIcon;

public abstract class NaveEnemiga extends Nave{

	private int puntaje;
	private Point vector;
	private Random aleatorio;
	private boolean encendida;
	//Los siguientes parametros son las distintas opciones posibles a utilizar a la hora de realizar un movimiento
	public static final int ARRIBA = 0, 
			ARRIBA_DERECHA = 1, 
			DERECHA = 2, 
			ABAJO_DERECHA = 3, 
			ABAJO = 4, 
			ABAJO_IZQUIERDA = 5, 
			IZQUIERDA = 6,			
			ARRIBA_IZQUIERDA = 7;
	
	public NaveEnemiga(int factorMovimiento, ImageIcon image, int ancho,
			int alto, String nombre, int puntaje,int salud) {
		super(factorMovimiento, image, ancho, alto, nombre, salud);
		this.puntaje = puntaje;
		this.aleatorio = new Random();
	}
	

	public void encender (){
		encendida = true;
		this.aumentarSalud(100);
	}

	public void apagar (){
		encendida = false;
	}
	
	public boolean getEstado (){
		return encendida;
	}
	
	public Point getMovimiento (){
		return vector;
	}
	
	public void setMovimiento (int movimiento){
		
		switch (movimiento) {
		case 0:
			vector = new Point (0,-1);
			break;
		case 1:
			vector = new Point (1,-1);
			break;
		case 2:
			vector = new Point (1,0);
			break;
		case 3:
			vector = new Point (1,1);
			break;
		case 4:
			vector = new Point (0,1);
			break;
		case 5:
			vector = new Point (-1,1);
			break;
		case 6:
			vector = new Point (-1,0);
			break;
		case 7:
			vector = new Point (-1,-1);
			break;
			
		}
	}
	
	public void mover(){
		try {
			this.setLocation(this.getX() + (this.vector.x * this.getFactor()), this.getY() + (this.vector.y * this.getFactor()));
		}
		catch (NullPointerException ex) {
			System.out.println("No se ha establecido el movimiento de una nave");
		}
	}
	
	public void morir () {
		this.setLocation(550 + aleatorio.nextInt(1000),aleatorio.nextInt(750));
		this.setMovimiento(this.ABAJO);
		this.setSalud(0);
		this.apagar();
		this.repaint();
	}
	
	public int getPuntaje (){
		return puntaje;	
	}

}
